# @Author: Cjuicy 
# @Date: 2022-03-21 16:07:16 
# @Last Modified by:   Cjuicys 
# # @Last Modified time: 2022-03-21 16:07:16  */

from select import select
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from matplotlib import widgets
import numpy as np



class Ui_MainWindow(object):
    

    '''程序界面布局'''
    def set_ui(self):
        
        

        '''设置主界面'''
        self.__layout_main =QTabWidget()
        
        '''创建三个小控件窗口'''
        self.__layout_main_tab1 =QtWidgets.QWidget()            #tab1总布局界面
        self.__layout_main_tab2 = QtWidgets.QWidget()           #tab2的总布局界面

        '''将三个选项卡添加到顶层窗口中'''
        self.__layout_main.addTab(self.__layout_main_tab1,"识别")
        self.__layout_main.addTab(self.__layout_main_tab2,"管理")

        '''每个选项卡自定义内容'''
        self.tab1UI()
        self.tab2UI()

        # self.__layout_main.setWindowIcon(QIcon("./icon/hjs.png"))
        self.__layout_main.setWindowTitle("慧结算") 




        # self.__layout_main = QtWidgets.QGridLayout()                #总布局
        # self.__layout_fun_button1 = QtWidgets.QHBoxLayout()         #按键布局1
        # self.__layout_fun_button2 = QtWidgets.QHBoxLayout()         #按键布局2
        # self.__layout_data_show = QtWidgets.QVBoxLayout()           #数据(视频)显示布局
        # self.__layout_list_show  = QtWidgets.QVBoxLayout()          #表格布局


        # self.button_confirm = QtWidgets.QPushButton('确认')         #建立用于打开摄像头的按键
        # self.button_settle_accounts = QtWidgets.QPushButton('结账') #建立结账的按钮
        # self.button_picture = QtWidgets.QPushButton("图片识别")     #建立图片识别的按钮
        # self.list_show =  QtWidgets.QTableWidget(6,3)               #建立表格
        # self.label_account = QtWidgets.QLabel("总价：")              #建立label


        # '''set butten size '''
        # self.button_confirm.setMinimumHeight(50)                    #设置按键大小
        # self.button_settle_accounts.setMinimumHeight(50)
        # self.button_picture.setMinimumHeight(50)              
        # self.label_account.setMinimumHeight(50)                     #设置label大小
        

        # # self.button_close.move(10,100)                      #移动按键  这句话去掉好像也没关系
        # '''设置标签的格式'''
        # font = QtGui.QFont()
        # font.setPixelSize(18)
        # self.label_account.setFont(font)

        # '''设置表格'''
        # self.list_show.setHorizontalHeaderLabels(["名称","数量","单价"])
        # self.list_show.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)# adaptive size
        # self.list_show.setEditTriggers(QAbstractItemView.EditTrigger(False))    #将表格的内容设为不可编辑
        # '''信息显示'''
        # self.label_show_camera = QtWidgets.QLabel()                                 #定义显示视频的Label
        # self.label_show_camera.setFixedSize(641,481)                                #给显示视频的Label设置大小为641x481
        # '''把按键加入到按键布局中'''
        # self.__layout_fun_button1.addWidget(self.button_confirm)                    #把重新确认的按键放到按键布局中
        # self.__layout_fun_button1.addWidget(self.button_picture)                    #吧图片识别放到按键布局中
        # self.__layout_fun_button2.addWidget(self.button_settle_accounts)            #把结账的按键放到按键布局中
        
        # '''把表格加入到表格布局中'''
        # self.__layout_list_show.addWidget(self.list_show)                           #将表格添加到表格布局中
        # self.__layout_list_show.addWidget(self.label_account)                       #将总价label添加到表格布局中


        # '''设置按钮布局之间的间隔'''
        # self.__layout_fun_button1.setSpacing(20)                                    #设置控件距离

        

        # '''把某些控件加入到总布局中'''
        # self.__layout_main.addLayout(self.__layout_list_show,0,0)        #将表格布局添加到总布局中
        # self.__layout_main.addLayout(self.__layout_fun_button1,1,1)      #把按键布局加入到总布局中
        # self.__layout_main.addLayout(self.__layout_fun_button2,1,0)      #把按键布局加入到总布局中
        # self.__layout_main.addWidget(self.label_show_camera,0,1)        #把用于显示视频的Label加入到总布局中


        return self.__layout_main
 

    def tab1UI(self):
        '''与外界接触的按键需要用到self'''

        
                
        # self.__layout_main = QtWidgets.QGridLayout()                #总布局
        layout_main_tab = QtWidgets.QGridLayout()           #tab1总布局界面
        layout_fun_button1_tab = QtWidgets.QHBoxLayout()         #按键布局1
        layout_fun_button2_tab = QtWidgets.QHBoxLayout()         #按键布局2
        layout_data_show_tab = QtWidgets.QVBoxLayout()           #数据(视频)显示布局
        layout_list_show_tab  = QtWidgets.QVBoxLayout()          #表格布局

        self.button_confirm = QtWidgets.QPushButton('确认')         #建立用于打开摄像头的按键
        self.button_settle_accounts = QtWidgets.QPushButton('结账') #建立结账的按钮
        self.button_picture = QtWidgets.QPushButton("图片识别")     #建立图片识别的按钮
        self.list_show =  QtWidgets.QTableWidget(6,3)               #建立表格
        self.label_account = QtWidgets.QLabel("总价：")              #建立label
        
        '''set butten size '''
        self.button_confirm.setMinimumHeight(50)                    #设置按键大小
        self.button_settle_accounts.setMinimumHeight(50)
        self.button_picture.setMinimumHeight(50)              
        self.label_account.setMinimumHeight(50)                     #设置label大小
        
        '''设置标签的格式'''
        font = QtGui.QFont()
        font.setPixelSize(18)
        self.label_account.setFont(font)
        
        '''设置表格'''
        self.list_show.setHorizontalHeaderLabels(["名称","数量","单价"])
        self.list_show.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)# adaptive size
        self.list_show.setEditTriggers(QAbstractItemView.EditTrigger(False))    #将表格的内容设为不可编
        '''信息显示'''
        self.label_show_camera_tab = QtWidgets.QLabel()                                 #定义显示视频的Label
        self.label_show_camera_tab.setFixedSize(641,481)                                #给显示视频的Label设置大小为641x481
        
        '''把按键加入到按键布局中'''
        layout_fun_button1_tab.addWidget(self.button_confirm)                    #把重新确认的按键放到按键布局中
        layout_fun_button1_tab.addWidget(self.button_picture)                    #吧图片识别放到按键布局中
        layout_fun_button2_tab.addWidget(self.button_settle_accounts)            #把结账的按键放到按键布局中
        
        '''把表格加入到表格布局中'''
        layout_list_show_tab.addWidget(self.list_show)                           #将表格添加到表格布局中
        layout_list_show_tab.addWidget(self.label_account)                       #将总价label添加到表格布局中
        
        '''设置按钮布局之间的间隔'''
        layout_fun_button1_tab.setSpacing(20)                                    #设置控件距离
        
        '''把某些控件加入到总布局中'''
        layout_main_tab.addLayout(layout_list_show_tab,0,0)        #将表格布局添加到总布局中
        layout_main_tab.addLayout(layout_fun_button1_tab,1,1)      #把按键布局加入到总布局中
        layout_main_tab.addLayout(layout_fun_button2_tab,1,0)      #把按键布局加入到总布局中
        layout_main_tab.addWidget(self.label_show_camera_tab,0,1)        #把用于显示视频的Label加入到总布局中


        self.__layout_main_tab1.setLayout(layout_main_tab)

    def tab2UI(self):
        layout_main_tab = QtWidgets.QGridLayout()           #tab2总布局界面

        # layout_main_tab.setColumnStretch(2,1)             #设置格栅布局行和列的占比
        layout_main_tab.setRowStretch(1,0)
        
        layout_list_show_tab  = QtWidgets.QVBoxLayout()            #表格布局
        layout_select_show_tab  = QtWidgets.QVBoxLayout()            #查询板块布局
        layout_tab_show_tab   = QtWidgets.QVBoxLayout()
        
        layout_tab_show  = QtWidgets.QTabWidget()            #其他三个功能tab组件

        '''创建3个小功能布局'''
        self.layout_add_tab2 = QtWidgets.QWidget()            #增加
        self.layout_delete_tab2 = QtWidgets.QWidget()         #删除
        self.layout_alter_tab2 = QtWidgets.QWidget()          #修改


        '''将三个选项卡添加到顶层窗口中'''
        layout_tab_show.addTab(self.layout_add_tab2,'增加')
        layout_tab_show.addTab(self.layout_alter_tab2,'修改')
        layout_tab_show.addTab(self.layout_delete_tab2,'删除')

        '''添加到tab布局中'''
        layout_tab_show_tab.addWidget(layout_tab_show)
        

        '''每个小功能tab布局'''
        self.tab2UI_add()
        
        self.tab2UI_alter()
        self.tab2UI_delete()



        select__title = QtWidgets.QLabel("查询")
        select_hint_label = QtWidgets.QLabel("请输入食物的拼音或中文名")     #查询label提示控件
        self.select_LineEdit_tab2 = QtWidgets.QLineEdit()             #查询输入框控件
        self.select_confirm_button_tab2 =  QtWidgets.QPushButton('确定')     #查询按钮控件
        self.select_lable = QtWidgets.QLabel("数据为：")                #显示查询出来的数据
        

        self.list_show_tab2  = QtWidgets.QTableWidget()            #表格控件

        '''表格具体设计'''
        self.list_show_tab2.setRowCount(0)        #初始行数0行
        self.list_show_tab2.setColumnCount(3)
        self.list_show_tab2.setHorizontalHeaderLabels(['拼音','单价','中文'])
        self.list_show_tab2.setHidden(False)        #显示行号
        
        '''控件添加到分布局'''
        
        layout_list_show_tab.addWidget(self.list_show_tab2)
        

        layout_select_show_tab.addWidget(select__title)
        layout_select_show_tab.addWidget(select_hint_label)
        layout_select_show_tab.addWidget(self.select_LineEdit_tab2)
        layout_select_show_tab.addWidget(self.select_confirm_button_tab2)
        layout_select_show_tab.addWidget(self.select_lable)


        '''分布局添加到tab2总布局'''
        layout_main_tab.addLayout(layout_list_show_tab,0,0,2,1)     #最后两个参数，占两行，1列
        layout_main_tab.addLayout(layout_select_show_tab,0,1)
        layout_main_tab.addLayout(layout_tab_show_tab,1,1)
        
        self.__layout_main_tab2.setLayout(layout_main_tab)



    '''tab2表格的更新操作'''
    def refresh_row(self,arr_all,row_num):
        self.list_show_tab2.clearContents()
        self.list_show_tab2.setRowCount(row_num)
        for i in range(row_num):
            self.list_show_tab2.setItem(i,0,QTableWidgetItem(arr_all[i][0]))
            self.list_show_tab2.setItem(i,1,QTableWidgetItem(arr_all[i][1]))
            self.list_show_tab2.setItem(i,2,QTableWidgetItem(arr_all[i][2]))
            

    def tab2UI_add(self):
        '''定义tab2的add布局'''
        layout_add_main_tab = QtWidgets.QVBoxLayout()


        add_hint_label_1 = QtWidgets.QLabel("*请输入食物的拼音")     #查询label提示控件
        self.add_LineEdit_tab2_1 = QtWidgets.QLineEdit()             #拼音输入框控件
        add_hint_label_2 = QtWidgets.QLabel("*请输入食物的价格")
        self.add_LineEdit_tab2_2 = QtWidgets.QLineEdit()             #价格输入框控件
        add_hint_label_3 = QtWidgets.QLabel("*请输入食物的中文")
        self.add_LineEdit_tab2_3 = QtWidgets.QLineEdit()             #中文输入框控件
        self.add_confirm_button_tab2 =  QtWidgets.QPushButton('添加')     #添加按钮控件
        self.add_hint_lable = QtWidgets.QLabel("")                #显示提示信息

        '''将控件添加到小布局中'''
        layout_add_main_tab.addWidget(add_hint_label_1)
        layout_add_main_tab.addWidget(self.add_LineEdit_tab2_1)
        layout_add_main_tab.addWidget(add_hint_label_2)
        layout_add_main_tab.addWidget(self.add_LineEdit_tab2_2)
        layout_add_main_tab.addWidget(add_hint_label_3)
        layout_add_main_tab.addWidget(self.add_LineEdit_tab2_3)
        layout_add_main_tab.addWidget(self.add_confirm_button_tab2)
        layout_add_main_tab.addWidget(self.add_hint_lable)


        '''将布局添加到总布局'''
        self.layout_add_tab2.setLayout(layout_add_main_tab)

        return 0 



    def tab2UI_alter(self):
        '''定义tab2的alter布局'''
        layout_alter_main_tab = QtWidgets.QVBoxLayout()

        alter_row_hint_label_1 = QtWidgets.QLabel("*请输入行号")          #修改label提示控件
        self.alter_LineEdit_tab2_1 = QtWidgets.QLineEdit()             #行号输入框控件
        alter_hint_label_1 = QtWidgets.QLabel("食物的拼音(可不填)")     #查询label提示控件
        self.alter_LineEdit_tab2_2 = QtWidgets.QLineEdit()             #拼音输入框控件
        alter_hint_label_2 = QtWidgets.QLabel("食物的价格(可不填)")
        self.alter_LineEdit_tab2_3 = QtWidgets.QLineEdit()             #价格输入框控件
        alter_hint_label_3 = QtWidgets.QLabel("食物的中文(可不填)")
        self.alter_LineEdit_tab2_4 = QtWidgets.QLineEdit()             #中文输入框控件
        self.alter_confirm_button_tab2 =  QtWidgets.QPushButton('修改')     #添加按钮控件
        self.alter_hint_lable = QtWidgets.QLabel("")                #显示提示信息

        '''将控件添加到小布局中'''
        layout_alter_main_tab.addWidget(alter_row_hint_label_1)
        layout_alter_main_tab.addWidget(self.alter_LineEdit_tab2_1)
        layout_alter_main_tab.addWidget(alter_hint_label_1)
        layout_alter_main_tab.addWidget(self.alter_LineEdit_tab2_2)
        layout_alter_main_tab.addWidget(alter_hint_label_2)
        layout_alter_main_tab.addWidget(self.alter_LineEdit_tab2_3)
        layout_alter_main_tab.addWidget(alter_hint_label_3)
        layout_alter_main_tab.addWidget(self.alter_LineEdit_tab2_4)
        layout_alter_main_tab.addWidget(self.alter_confirm_button_tab2)
        layout_alter_main_tab.addWidget(self.alter_hint_lable)


        '''将布局添加到总布局'''
        self.layout_alter_tab2.setLayout(layout_alter_main_tab)
        return 0 





    def tab2UI_delete(self):
        '''定义tab2的delete布局'''
        layout_delete_main_tab = QtWidgets.QVBoxLayout()


        add_hint_label_1 = QtWidgets.QLabel("请输入行号")     #查询label提示控件
        self.delete_LineEdit_tab2_1 = QtWidgets.QLineEdit()             #拼音或中文输入框控件
        self.delete_confirm_button_tab2 =  QtWidgets.QPushButton('删除')     #添加按钮控件
        self.delete_hint_lable = QtWidgets.QLabel("")                #显示提示信息

        '''将控件添加到小布局中'''
        layout_delete_main_tab.addWidget(add_hint_label_1)
        layout_delete_main_tab.addWidget(self.delete_LineEdit_tab2_1)
        layout_delete_main_tab.addWidget(self.delete_confirm_button_tab2)
        layout_delete_main_tab.addWidget(self.delete_hint_lable)


        '''将布局添加到总布局'''
        self.layout_delete_tab2.setLayout(layout_delete_main_tab)

        return 0 

